// 启动服务
const express = require('express');
const app = express();
app.listen(3006, () => console.log('ready~~启动了'));

// 解决跨域问题
const cors = require('cors');
app.use(cors());

// 开发静态资源
app.use(express.static('uploads'))

// 加载 express-jwt 模块  解密 token 控制那些接口不需要认证
const expressJWT = require('express-jwt');
app.use(expressJWT({
    secret: 'kkkk',
    algorithms: ['HS256']   // 固定写法
}).unless({
    // path: ['/api/login','/api/reguser']
    path: /^\/api/   // 以 /api 开头的不需要认证
}));

// 接收查询字符串类型的请求体
app.use(express.urlencoded({ extended: false }));

// 加载路由模块  (登录和注册模块)
let loginRouter = require('./routers/login');
// 注册成中间件
app.use('/api', loginRouter);

// 加载路由模块  (分类模块)
let categoryRouter = require('./routers/category');
// 注册成中间件
app.use('/my/article', categoryRouter);

// 加载路由模块  (文章类别模块)
let articleRouter = require('./routers/article');
// 注册成中间件
app.use('/my/article', articleRouter);

// 加载路由模块  (个人中心模块)
let userRouter = require('./routers/user');
// 注册成中间件
app.use('/my', userRouter);

// 错误处理中间件
app.use(function (err, req, res, next) {
    if (err.name === 'UnauthorizedError') {
        res.status(401).send({ status: 1, message: '身份认证失败！' });
    };

    // 处理数据验证方面的错误
    // res.send('错误')
    // if (err.error && err.error.name === 'ValidationError') {
        res.send({ status: 1, message: '密码长度至少6~12位' })
    // }
});